package com.fotile.weixin.event.dto;

import lombok.Data;
import org.springframework.core.annotation.Order;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@Data
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "xml")
public class RequestDTO {
//    企业微信CorpID
    @XmlElement(name = "ToUserName")
    private String toUserName;
//    成员UserID
    @XmlElement(name = "FromUserName")
    private String platformUserName;
//    消息创建时间（整型）
    @XmlElement(name = "CreateTime")
    private String createTime;
//    消息类型，此时固定为：event
    @XmlElement(name = "MsgType")
    private String msgType;

    // 事件推送
    @XmlElement(name = "Event", required = false)
    private String event;
    @XmlElement(name = "EventKey", required = false)
    private String eventKey;

    //企业号应用ID
    @XmlElement(name = "AgentID")
    private String agentID;

    // 文本内容
    @XmlElement(name = "Content", required = false)
    private String content;

    // 地理位置
    @XmlElement(name = "Location_X", required = false)
    private Float location_X;
    @XmlElement(name = "Location_Y", required = false)
    private Float location_Y;
    @XmlElement(name = "Scale", required = false)
    private Integer scale;
    @XmlElement(name = "Label", required = false)
    private String label;
    //上报地理位置
    // 地理位置经度
    @XmlElement(name = "Longitude", required = false)
    private Float Longitude;
//    地理位置纬度
    @XmlElement(name = "Latitude", required = false)
    private Float Latitude;
//    地理位置精度
    @XmlElement(name = "Precision", required = false)
    private Float Precision;


    // 链接消息
    @XmlElement(name = "Title", required = false)
    private String title;
    @XmlElement(name = "Description", required = false)
    private String description;
    @XmlElement(name = "Url", required = false)
    private String url;
    @XmlElement(name = "MsgId", required = false)
    private Long msgId;

    // 语音消息
    @XmlElement(name = "MediaId", required = false)
    private String mediaId;
    @XmlElement(name = "Format", required = false)
    private String format;

    // 图片消息
    @XmlElement(name = "PicUrl", required = false)
    private String picUrl;

// 通讯录消息
//    当企业通过通讯录助手开通通讯录权限后，成员的变更会通知给企业。变更的事件，将推送到企业微信管理端通讯录助手中的‘接收事件服务器’。由通讯录同步助手调用接口触发的变更事件不回调通讯录同步助手本身。管理员在管理端更改组织架构或者成员信息以及企业微信的成员在客户端变更自己的个人信息将推送给通讯录同步助手。
//    新增成员事件   FromUserName--此事件该值固定为sys，表示该消息由系统生成


//
//    ToUserName	企业微信CorpID
//    FromUserName	此事件该值固定为sys，表示该消息由系统生成
//    CreateTime	消息创建时间 （整型）
//    MsgType	消息的类型，此时固定为event
//    Event	事件的类型，此时固定为change_contact
//    ChangeType	此时固定为create_user
@XmlElement(name = "ChangeType", required = false)
private String  ChangeType;
//    UserID	成员UserID
//    Name	成员名称
@XmlElement(name = "Name", required = false)
private String  Name;
//    Department	成员部门列表
@XmlElement(name = "Department", required = false)
private String  Department;
//    Mobile	手机号码
@XmlElement(name = "Mobile", required = false)
private String  Mobile;
//    Position	职位信息。长度为0~64个字节
@XmlElement(name = "Position", required = false)
private String  Position;
//    Gender	性别，1表示男性，2表示女性
@XmlElement(name = "Gender", required = false)
private String  Gender;
//    Email	邮箱
@XmlElement(name = "Email", required = false)
private String  Email;
//    Status	激活状态：1=已激活 2=已禁用 4=未激活 已激活代表已激活企业微信或已关注微工作台（原企业号）。
@XmlElement(name = "Status", required = false)
private String  Status;
//    Avatar	头像url。注：如果要获取小图将url最后的”/0”改成”/100”即可。
@XmlElement(name = "Avatar", required = false)
private String  Avatar;
//    EnglishName	英文名
@XmlElement(name = "EnglishName", required = false)
private String  EnglishName;
//    IsLeader	上级字段，标识是否为上级。0表示普通成员，1表示上级
@XmlElement(name = "IsLeader", required = false)
private String  IsLeader;
//    Telephone	座机
@XmlElement(name = "Telephone", required = false)
private String  Telephone;
//    ExtAttr	扩展属性
@XmlElement(name = "ExtAttr", required = false)
private String  ExtAttr;

//    更新成员事件
//    ChangeType	此时固定为update_user
//  删除成员事件
//    ChangeType	此时固定为delete_user
//    新增部门事件
//ChangeType	此时固定为create_party
//Id	部门Id
@XmlElement(name = "Id", required = false)
private String  Id;
//    Name	部门名称
//    ParentId	父部门id
@XmlElement(name = "ParentId", required = false)
private String  ParentId;
//    Order 部门排序
@XmlElement(name = "Order", required = false)
private String  Order;

//    TagId	标签Id
@XmlElement(name = "TagId", required = false)
private String  TagId;
//    AddUserItems	标签中新增的成员userid列表，用逗号分隔
@XmlElement(name = "AddUserItems", required = false)
private String  AddUserItems;
//    DelUserItems	标签删除的成员userid列表，用逗号分隔
@XmlElement(name = "DelUserItems", required = false)
private String  DelUserItems;
//    AddPartyItems	标签中新增的部门id列表，用逗号分隔
@XmlElement(name = "AddPartyItems", required = false)
private String  AddPartyItems;
//    DelPartyItems	标签中删除的部门id列表，用逗号分隔
@XmlElement(name = "DelPartyItems", required = false)
private String  DelPartyItems;



}
